*****************************************************************************
*																			*
*					Kontrollvariablen RCS 09								*
*																			*
*****************************************************************************

dir
use 2009\ZA5303_v6-0-0.dta, clear

*----------------------------------------------
* Wochen und Tage
*----------------------------------------------


tab pre_woche
gen week_count = pre_woche-31
tab week_count

gen week = pre_woche-39
tab week


tab pre_tag

tab pre_datum		//Vorwahlbefragung geht bis 1 Tag vor BTW
gen day_count = pre_tag-1

gen day = pre_tag-61
tab day



*-------------------------------------------------------
* Wahlabsicht
*-------------------------------------------------------

lookfor Wahlabsicht
tab pre005 pre003			//Briefw�hler und Nichtw�hler nicht
							//enthalten

lab define wabsfull ///
	1 "CDU/CSU" ///
	4 "SPD" ///
	5 "FDP" ///
	6 "Gr�ne" ///
	7 "Die Linke" ///
	206 "NPD" ///
	215 "Piraten" ///
	322 "AFD" ///
	801 "andere Partei" ///
	888 "wei� nicht" ///
	999 "Nichtw�hler"

recode pre005 (225=801) (993 994=999) ///
	(999 1000=.) (998=888), gen(wabsfull)	
replace wabsfull=999 if pre003>3 & pre003~=6
replace wabsfull=. if pre003==6			//Briefw�hler m�ssen raus, weil f�r sie keine Latenzen
lab val wabsfull wabsfull

tab wabsfull pre005, m		

* Dummies f�r jede Auspr�gung bilden
tab wabsfull, gen(wabs)
/*Vorsicht, die neuen wabs-Variablen haben andere Suffix-Zahlen
als die Auspr�gung*/

foreach var of varlist wabs1-wabs10 {
gen mean`var' = .
}

forvalues num=-8/0 {
foreach var of varlist wabs1-wabs10 {
	sum `var' [aweight=wei_ipf1w] if week==`num'
	replace mean`var' = r(mean) if week==`num'
}
}

fre meanwabs1 meanwabs2

/*


graph twoway connected meanwabs9  ///
	meanwabs10 meanwabs1 meanwabs2 meanwabs3 ///
	meanwabs4 pre_woche, sort ///
	ylabel(0(0.1)0.5) xlabel(31(2)39) ///
	legend(label (1 "wei� nicht") label (2 "werde nicht w�hlen") ///
	label (3 "CDU/CSU") label (4 "SPD") ///
	label (5 "FDP") label (6 "Gr�ne")) ///
	color(gs8 blue gs0 maroon gold dkgreen) ///
	scheme(s1color) title("2009")
graph export Graphiken/wabsdynamik.png, replace
*/
	
//dynamischer Wahlkampf: "wei� nicht" nimmt 2 Wochen
//sch�n ab, ist aber kurz vor Wahl immer noch sehr hoch


*---------------------------------------
* Wahlentscheidung (Nachwahl)
*----------------------------------------

fre pos004
recode pos004 (225=801) (993 1000=999) ///
	(998 999 1002=.), gen(vote)
lab val vote wabsfull

fre vote
tab vote pos004, m

*-----------------------------------------------------
* Pr�dispositionen
*-----------------------------------------------------

* Parteiidentifikation: Dummies
tab pre126
gen pidunion = pre126>=1 & pre126<=3
gen pidspd = pre126==4
gen pidfdp = pre126==5
gen pidgru = pre126==6
gen pidlin = pre126==7
gen pidand = pre126==801
gen pidno = pre126==808 | pre126==998		//wer nicht wei�, ob er eine
											//PID hat, hat wohl keine
											
gen pidreg = pidunion==1 | pidspd==1
gen pidopp = pidfdp==1 | pidgru==1 | pidlin==1
gen pidother = pidand==1

lab var pidunion "Anh�nger Union"
lab var pidspd "Anh�nger SPD"
lab var pidfdp "Anh�nger FDP"
lab var pidgru "Anh�nger Gr�ne"
lab var pidlin "Anh�nger Linke"
lab var pidand "Anh�nger anderer Partei"
lab var pidno "Keine PID"
lab var pidreg "Regierungsanh�nger" 
lab var pidopp "Oppositionsanh�nger"
lab var pidother "Anh�nger von anderen Parteien (nicht im BT)"


foreach var of varlist pid* {
replace `var' = . if pre126==999  //Missings rausschmei�en
}

tab pre126 pidspd, m
tab pre126 pidunion, m			//Kontrolle
tab pre126 pidspd, m
tab pre126 pidgru, m
tab pre126 pidno, m

* f�r alternativspezifische Analysen: Parteien bekommen
* gleiche Nummer wie in Vote-Variable
gen pid1 = pidunion
gen pid4 = pidspd
gen pid5 = pidfdp
gen pid6 = pidgru
gen pid7 = pidlin
gen pid801 = pidand


* Parteiidentifikation: St�rke
lookfor Staerke
tab pre127

mvdecode pre127, mv(98 / 100)
tab pre127

gen pidstr = 6-pre127		//Skala umdrehen: Hohe Werte sollen hohe St�rke bedeuten
replace pidstr = 0 if pidno==1	//St�rke=0, wenn keine PID

lab var pidstr "St�rke PID" 

tab pidstr pidno, m

* Politisches Interesse

mvdecode pre001, mv(98 99)
tab pre001
tab pre001, m
gen polint=5-pre001		//Skala umdrehen
lab var polint "Politisches Interesse"
lab define polint 0 "keins" 4 "sehr hoch", replace
lab val polint polint
tab polint pre001

*---------------------------------------------------------
* Stimmt Wahlentscheidung (Nachwahl) mit PID �berein?
*---------------------------------------------------------

gen votepidmatch = . 

foreach num of numlist 1 4 5/7 801 {
replace votepidmatch = 1 if pid`num'==1 & vote==`num'
replace votepidmatch = 0 if (pid`num'~=1 & vote==`num') ///
	| (pid`num'==1 & vote~=`num')
}

replace votepidmatch = 0 if vote==999 	//bei Nichtw�hlern stimmt Entscheidung auch nicht mit PID �berein
replace votepidmatch = . if vote==. | pidunion==.

list pidunion-pidand vote votepidmatch 

fre votepidmatch

*------------------------------------------------------------
* Konfrontation mit politischen Informationen
*------------------------------------------------------------

* Politische Gespr�che

lookfor gespr

tab pre061
gen talk = pre061
mvdecode talk, mv(98/99)
lab var talk "H�ufigkeit politischer Gespr�che"
lab val talk pre061		//altes Valuelabel benutzen
tab talk pre061, m
tab talk

* Parteikontakt in der vergangenen Woche
* Vorsicht: Frage wird erst ab 31.08 gestellt!
egen contact_impers = anycount(pre085_1-pre085_6),  ///
	values(1) 
replace contact_impers = . if pre085_1==100 | ///
	pre085_9==1	
lab var contact_impers "Count unpers�nlicher Kontakt"	
fre contact_impers

list pre085_1-pre085_6 contact_impers, nol
	
egen contact_pers = anycount(pre086_1-pre086_6), ///
	values(1)
replace contact_pers = . if pre086_1==100 | ///
	pre086_9==1
list pre086_1-pre086_6 contact_pers, nol
fre contact_pers
lab var contact_pers "Count pers�nlicher Kontakt"


* Zeitung 
* Frageformulierung: Wie oft in der vergangenen Woche wurde die am
* h�ufigsten gelesene Zeitung gelesen?
lookfor Zeitung
tab pre039 pre040

gen paper = pre040
mvdecode paper, mv(98/100)
replace paper = 0 if pre040==8 | pre040==9 | pre039==97	//wenn keine politischen Berichte gelesen wurden, vergangene Woche die Zeitung nicht gelesen wurden oder gar keine Zeitung gelesen wurde
tab paper pre040, m
tab paper pre039, m			//hier sind Leser von lokalen Zeitungen mit drin

lab var paper "Tageszeitung"

* Aufmerksamkeit Zeitung
fre pre047
tab pre047 pre039

gen paperattention = pre047
mvdecode paperattention, mv(98 99 100)
replace paperattention = 4-paperattention

tab paperattention pre047, m


* TV-Nachrichten
fre pre049 pre051

gen ard = pre049
replace ard = 0 if pre049>7
replace ard = . if pre049==99

gen zdf = pre051
replace zdf = 0 if pre051>7
replace zdf = . if pre051==99

tab ard pre049, m
tab zdf pre051, m

tab ard zdf

egen news = rowmax(ard zdf)
list ard zdf news if ard==.

* Aufmerksamkeit TV-Nachrichten
fre pre057
tab pre051 pre057

gen newsattention = pre057
mvdecode newsattention, mv(98 99 100)
replace newsattention = 4-newsattention

tab newsattention pre057, m

* Private Nachrichten
fre pre053 pre055

gen rtl = pre053
replace rtl = 0 if pre053>7
replace rtl = . if pre053==99
tab rtl pre053, m

gen sat1 = pre055
replace sat1 = 0 if pre055>7
replace sat1 = . if pre055==99
tab sat1 pre055, m

egen newsprivat = rowmax(rtl sat1)
//list rtl sat1 newsprivat

* Internet
lookfor internet
fre pre059
/*Frageformulierung:
Und an wie vielen Tagen haben Sie sich in der vergangenen Woche
im Internet �ber Parteien und den 
Bundestagswahlkampf informiert?*/

gen internet = 0 if pre059<11 | pre059==98
replace internet = pre059-10 if pre059>11 & pre059<98
tab internet pre059, m


*-----------------------------------------------
* Soziodemographie
*-------------------------------------------------

* Geschlecht
lookfor geschlecht
tab pre102
gen weiblich = pre102==2
tab weiblich, m


* Interviewer
lookfor interviewer
tab pre_icode
gen interviewer= pre_icode
tab interviewer
****************************

* Need 
lookfor need
tab pos050_b				//aus Nachwahl, deswegen Fallverlust
gen need = pos050_b
mvdecode need, mv(98/102)
tab need



***** Alter
lookfor geburtsjahr
tab pre101
mvdecode pre101, mv(9998 9999)

gen alter = 2009-pre101
tab alter


**** Bildung
lookfor Schul
tab pre103

gen educlow = pre103==1 | pre103==2
gen educhigh = pre103==4 | pre103==5


replace educlow = . if pre103==99 | pre103==98 | pre103==7 | pre103==6
replace educhigh = . if pre103==99 | pre103==98 | pre103==7 | pre103==6

tab pre103 educlow, m


*-----------------------------------------------
* Wichtigstes politisches Problem
*-----------------------------------------------

lookfor problem
fre pre014c1		//nur knapp 180 wei� nicht

/*Problem: Obwohl nach DEM wichtigsten politischen 
Problem gefragt wird, nennen manche Personen mehr als
ein Problem. Sp�ter bei Latenzen muss dies beachtet
werden, wer 5 Dinge aufz�hlt, braucht nat�rlich l�nger 
als jemand der sich an Vorgabe h�lt und nur ein 
Problem oder mit "wei� nicht"/"Keine Angabe" antwortet*/

gen zahlerstnennung = 1
replace zahlerstnennung = 2 if pre014c2~=10000
replace zahlerstnennung = 3 if pre014c3~=10000
replace zahlerstnennung = 4 if pre014c4~=10000
replace zahlerstnennung = 5 if pre014c5~=10000

gen mipwei�nicht = pre014c1==9999
tab mipwei�nicht week



*--------------------------------------------------
* Kanzlerkandidatenskalometer
*--------------------------------------------------

lookfor merkel
fre pre034_a 

lookfor steinmeier
fre pre034_b

gen merkelwei�nicht = pre034_a==97 | pre034_a==98
gen steinwei�nicht = pre034_b==97 | pre034_b==98

tab pre034_a merkelwei�nicht, m
tab pre034_b steinwei�nicht, m

tab steinwei�nicht week, col





